/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.skycode.segu.mbean;

import com.skycode.core.exception.DAOException;
import com.skycode.core.mbean.ApplicationMBean;
import com.skycode.core.mbean.GenericMBean;
import com.skycode.core.mbean.SessionMBean;
import com.skycode.segu.dto.UsuarioDto;
import com.skycode.segu.manager.UsuarioManager;
import java.io.Serializable;
import java.util.List;
import javax.annotation.Resource;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 * @author SkyCode (skycode@gmail.com)
 * @since 07/02/2014
 * @version 1.0
 */
@Controller("usuarioMBean")
@Scope("session")
public class UsuarioMBean extends GenericMBean implements Serializable {
    
    private static Logger logger = Logger.getLogger(LoginMBean.class);
    private UsuarioDto dto;
    private UsuarioDto dtoFiltro;
    private List<UsuarioDto> lista;
    @Resource
    private UsuarioManager usuarioManager;
    @Autowired
    private ApplicationMBean applicationMBean;
    @Autowired
    private SessionMBean sessionMBean;
    private SelectItem[] siEstadosFiltro;
    
    public UsuarioMBean() {
    }
    
    public String iniciar() {
        this.dtoFiltro = new UsuarioDto();
        this.dtoFiltro.setDescripcion("");
        this.dtoFiltro.setEstado("");
        this.lista = null;
        
        return this.usuarioManager.getUrlLista();
    }
    
    public void buscar(ActionEvent ae) {
        try {
            this.lista = this.usuarioManager.obtener(this.dtoFiltro);
        } catch (DAOException e) {
            logger.error(e);
        }
    }
    
    public String nuevo() {
        
        return this.usuarioManager.getUrl();
    }

    public static Logger getLogger() {
        return logger;
    }

    public static void setLogger(Logger logger) {
        UsuarioMBean.logger = logger;
    }

    public UsuarioDto getDto() {
        return dto;
    }

    public void setDto(UsuarioDto dto) {
        this.dto = dto;
    }

    public UsuarioDto getDtoFiltro() {
        return dtoFiltro;
    }

    public void setDtoFiltro(UsuarioDto dtoFiltro) {
        this.dtoFiltro = dtoFiltro;
    }

    public List<UsuarioDto> getLista() {
        return lista;
    }

    public void setLista(List<UsuarioDto> lista) {
        this.lista = lista;
    }

    public UsuarioManager getUsuarioManager() {
        return usuarioManager;
    }

    public void setUsuarioManager(UsuarioManager usuarioManager) {
        this.usuarioManager = usuarioManager;
    }

    public ApplicationMBean getApplicationMBean() {
        return applicationMBean;
    }

    public void setApplicationMBean(ApplicationMBean applicationMBean) {
        this.applicationMBean = applicationMBean;
    }

    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }

    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }

    public SelectItem[] getSiEstadosFiltro() {
        this.siEstadosFiltro = this.usuarioManager.siEstadosFiltro();
        return siEstadosFiltro;
    }

    public void setSiEstadosFiltro(SelectItem[] siEstadosFiltro) {
        this.siEstadosFiltro = siEstadosFiltro;
    }
}
